package com.mfs.proxy.core.message.mailbox;

import com.mfs.proxy.core.enums.MessageTypeEnum;
import com.mfs.proxy.core.message.Message;

import java.io.Closeable;
import java.io.IOException;
import java.nio.channels.SelectionKey;

/**
 * 通讯邮箱 顶层接口
 * 用于Proxy Server 与 Proxy Client的通信
 * 邮箱能传递的内容都是固定的范式，都在{@link MessageTypeEnum}中事先定义好了，不可能也不允许有额外的内容。
 * 如果需要增加传递内容，需要在{@link MessageTypeEnum}中增加枚举
 *
 * @author mfs
 * @date 2023/7/1 22:01
 **/
public interface CommunicationMailbox extends Closeable {
    /**
     * 消息发送
     * @param messageType 消息类型
     * @param messageContent 消息内容
     * */
    void send(MessageTypeEnum messageType, Object messageContent) throws IOException;

    /**
     * 消息发送
     * @param messageType 消息类型
     * */
    void send(MessageTypeEnum messageType) throws IOException;

}
